;                       {a1, a2, ..., an} 2^n -1
;                       /                \
;       {a1, a2, ..., an-1} 2^(n-1)-1  an 2^(n-1)
;           : :
;           :     :
;           :            :
;       {a1, a2, a3} 7  a4 8
;       /        \
;   {a1,a2} 3   a3 4
;   /     \
; a1 1   a2 2

;易知最频繁的字符需要用1个二进制位，在编码过程中需要执行一次symbol过程，复杂度是O(n)
;对最不频繁的字符需要(n-1)个二进制位， 编码每一位都需要执行一次symbol过程，复杂度是O(n^2)